package com.dkd.manage.mapper;

import java.util.List;
import com.dkd.manage.domain.StrategyDevice;

/**
 * 策略设备关联Mapper接口
 *
 * @author ruoyi
 * @date 2025-11-10
 */
public interface StrategyDeviceMapper
{
    /**
     * 查询策略设备关联
     *
     * @param id 策略设备关联主键
     * @return 策略设备关联
     */
    public StrategyDevice selectStrategyDeviceById(Long id);

    /**
     * 查询策略设备关联列表
     *
     * @param strategyDevice 策略设备关联
     * @return 策略设备关联集合
     */
    public List<StrategyDevice> selectStrategyDeviceList(StrategyDevice strategyDevice);

    /**
     * 根据策略ID查询设备关联列表
     *
     * @param strategyId 策略ID
     * @return 设备关联列表
     */
    public List<StrategyDevice> selectStrategyDeviceByStrategyId(Long strategyId);

    /**
     * 根据设备ID查询策略关联列表
     *
     * @param deviceId 设备ID
     * @return 策略关联列表
     */
    public List<StrategyDevice> selectStrategyDeviceByDeviceId(Long deviceId);

    /**
     * 新增策略设备关联
     *
     * @param strategyDevice 策略设备关联
     * @return 结果
     */
    public int insertStrategyDevice(StrategyDevice strategyDevice);

    /**
     * 修改策略设备关联
     *
     * @param strategyDevice 策略设备关联
     * @return 结果
     */
    public int updateStrategyDevice(StrategyDevice strategyDevice);

    /**
     * 删除策略设备关联
     *
     * @param id 策略设备关联主键
     * @return 结果
     */
    public int deleteStrategyDeviceById(Long id);

    /**
     * 批量删除策略设备关联
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStrategyDeviceByIds(Long[] ids);

    /**
     * 根据策略ID删除设备关联
     *
     * @param strategyId 策略ID
     * @return 结果
     */
    public int deleteStrategyDeviceByStrategyId(Long strategyId);

    /**
     * 根据设备ID删除策略关联
     *
     * @param deviceId 设备ID
     * @return 结果
     */
    public int deleteStrategyDeviceByDeviceId(Long deviceId);

    /**
     * 批量分配策略给设备
     *
     * @param strategyId 策略ID
     * @param deviceIds 设备ID列表
     * @param createBy 创建者
     * @return 结果
     */
    public int batchAssignDevicesToStrategy(Long strategyId, Long[] deviceIds, String createBy);

    /**
     * 批量取消设备的策略分配
     *
     * @param strategyId 策略ID
     * @param deviceIds 设备ID列表
     * @return 结果
     */
    public int batchUnassignDevicesFromStrategy(Long strategyId, Long[] deviceIds);
}